Data services provide the data for a content distribution network. For example, in addition to streamed video content, a video streaming service provides a significant amount of information to client devices. Such information includes interactive content such as menus containing selectable items, which are obtained from data services. For example, each item may represent some video content available for viewing, such as a movie or television show, which is obtained from data services.
To provide data to the many different types of clients that may use the video streaming service, various customizations need to be considered. For example, streamed video data needs to match the hardware requirements of the device on which the video is being played. As another example, an icon or tile (an interactive user interface object that may assemble content such as an icon, text, an image, video and so on into a visible container for selection) used to represent an available movie or television show presented on one client device type may not be suitable when presented on another client. As a more particular example, a large television display (sometimes referred to as corresponding to a ten-foot user interface, in which “ten-foot” refers to an approximate viewing distance) is likely to be able to show a more detailed tile than a small screen mobile phone device, or a three-foot user interface such as a computer monitor. Conversely, a relatively small tile may be too small to be easily viewed and interacted with on a larger display.
Further, the data returned to a client device needs to be expected by the software program running on the device that consumes the data, including by a particular version of the software program. For example, consider a data request that results in a response containing the data composed from three separate data pieces X, Y and Z. If a client device running software version 2.0 expects X, Y and Z data to be present in a response, then such a response is appropriate. However, an earlier version software program (e.g., version 1.0) running on the same type of device may only be designed to handle a response containing X and Y data, and such a program may fail if given the full X, Y and Z response.
The many different nuances and subtleties of client devices, including possibly different software versions that may be run on the same type of device, need to be considered when returning data to client requestors.